<?php
/***********************************************************************
*  - используется mySQLi
*  - XML формируется при помощи DOM
************************************************************************/

// описываем параметры соединения
define( "DATABASE_SERVER", "localhost" );
define( "DATABASE_USERNAME", "root" );
define( "DATABASE_PASSWORD", "" );
define( "DATABASE_NAME", "common" );
$table = "users";

//содаем объект содержащий соединение с базой данных
$conn = @new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME);

// проверка ошибок соединения
if (mysqli_connect_errno() !==0 )
{
 // если ошибка при коннекте с базой данных
 $error_num = mysqli_connect_errno();
 $error_message = mysqli_connect_error();

 // передаем данные об ошибке в функцию
 sendErrorData($error_num, $error_message);

}
 else
{
 // если нет ошибки при коннекте с базой данных

 // устанавливаем кодировку соединения
 //$conn->query("SET CHARACTER SET 'utf8'");
 $conn->query("SET NAMES 'utf8'");

 // Данные из Flex передаются в переменную POST
 $username = mysqli_real_escape_string($conn, $_REQUEST["username"]);

 // шифруем входящий пароль
 // sha1 - 40 знаков, md5 - 32 знака
 $password = md5($_REQUEST["password"]);

 // запрос в базу данных
 $query_str = "SELECT * FROM $table WHERE username = '$username' AND password = '$password'";
 $resultData = @$conn->query($query_str);
 
 // проверям на ошибки после запроса
 if ($resultData === FALSE)
 {
 $error_num = $conn->errno;
 $error_message = $conn->error;
 // передаем данные об ошибке в функцию
 sendErrorData($error_num, $error_message);
 // закрываем соединение
 $conn->close();
 }
 else
 // формирование ответа
 {

 $result_row = $resultData->fetch_object();
 // проверка есть ли такой пользователь
 if(!$result_row)
 {
 // нет записи
 sendLoginError();

 }
 else
 {
  // добавим авторизациооные данные
 sendLoginData($result_row);
 }
 // закрываем соединение
 $conn->close();
 }

}
// Функция возвращает данные об ошибках при соединении с базой данных или при выполнении запроса.
function sendErrorData($myerr_num, $myerr_desc)
                {

 $dom = new DOMdocument('1.0', 'utf-8');    # Создание XML DOM Document
 $dom->formatOutput = true;                # Форматируем вывод
 $rows = $dom->appendChild($dom->createElement('data'));    # Создадим root XML element
 $rows->appendChild($row = $dom->createElement('error', 'yes'));    # Создадим первый элемент - error
 $rows->appendChild($row = $dom->createElement('error_num', $myerr_num));    # Создадим второй элемент - номер ошибки
 $rows->appendChild($row = $dom->createElement('error_desc', $myerr_desc));    # Создадим третий элемент - описание ошибки

 // выводим ответ
 print $dom->saveXML();
 
}

// Функция возвращает данные  - авторизация не прошла.
function sendLoginError() {

 $dom = new DOMdocument('1.0', 'utf-8');    # Создание XML DOM Document
 $dom->formatOutput = true;                # Форматируем вывод
 $rows = $dom->appendChild($dom->createElement('data'));    # Создадим root XML element
 $rows->appendChild($row = $dom->createElement('error', 'no'));    # Создадим первый элемент - error
 $rows->appendChild($row = $dom->createElement('loginsuccess', 'no'));    # Создадим второй элемент - прошла ли авторизация

 // выводим ответ
 echo $dom->saveXML();
}

// Функция возвращает данные  - авторизация прошла успешно + все данные пользователя.
function sendLoginData($my_result)

{

 $dom = new DOMdocument('1.0', 'utf-8');    # Создание XML DOM Document
 $dom->formatOutput = true;                # Форматируем вывод
 $rows = $dom->appendChild($dom->createElement('data'));    # Создадим root XML element
 $rows->appendChild($row = $dom->createElement('error', 'no'));    # Создадим первый элемент - error
 $rows->appendChild($row = $dom->createElement('loginsuccess', 'yes'));    # Создадим второй элемент - прошла ли авторизация
 // добавление данных
 $rows->appendChild($row = $dom->createElement('UserId', $my_result->user_id));     # Создадим элемент - FirstName
 $rows->appendChild($row = $dom->createElement('Ulastdate', $my_result->last_date));         # Создадим элемент - LastName
 $rows->appendChild($row = $dom->createElement('Uemail', $my_result->email));             # Создадим элемент - Email
 $rows->appendChild($row = $dom->createElement('Udate', $my_result->date));    # Создадим элемент - date
 $rows->appendChild($row = $dom->createElement('Status', $my_result->status));    # Создадим элемент - status
 // выводим ответ
 echo $dom->saveXML();
}

?>